lexer grammar XMLLexer;

options {
  language = Java;
}

@header {
  package practpl.nuevemod;
}

@members {
     
     private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
     public ArrayList<RecognitionException> getErrors() {
        return errors;
     }
     @Override
     public void reportError (RecognitionException e) {
        String msg = getErrorMessage(e, getTokenNames());
        System.err.println(msg);
        errors.add(e);
     }
     
     boolean in_tag = false;
 
}

fragment LETRA: ('a'..'z')|('A'..'Z');
fragment DIGITO: ('0'..'9');

BLANCO: (' '|'\t'|'\r\n'|'\n') {skip();};

NUMERO: (DIGITO)+('.'(DIGITO)*)?;
IDENT: LETRA(LETRA|DIGITO|'.')+;
//TEXTO: (IDENT|' '|'.')*;
ABRIR_ANGULO: '<' {in_tag = true;};
ABRIR_ANGULO_FIN: '</' {in_tag = true;};
CERRAR_ANGULO: '>' {in_tag = false;};

IGUAL : '=';

COMENTARIO: '<!--' (options {greedy=false;}:.)* '-->' {skip();};
